package org.jutils.task;

import java.awt.Component;

import org.jutils.ui.event.ItemActionListener;

/*******************************************************************************
 * 
 ******************************************************************************/
public interface ITaskHandler
{
    /***************************************************************************
     * @return
     **************************************************************************/
    public boolean canContinue();

    /***************************************************************************
     * @param message
     **************************************************************************/
    public void signalMessage( String message );

    /***************************************************************************
     * @param percent
     **************************************************************************/
    public void signalPercent( int percent );

    /***************************************************************************
     * @param error
     **************************************************************************/
    public void signalError( TaskError error );

    /***************************************************************************
     * 
     **************************************************************************/
    public void signalFinished();

    /***************************************************************************
     * 
     **************************************************************************/
    public void stop();

    /***************************************************************************
     * @throws InterruptedException
     **************************************************************************/
    public void stopAndWait() throws InterruptedException;

    /***************************************************************************
     * @param l
     **************************************************************************/
    public void addFinishedListener( ItemActionListener<Boolean> l );

    /***************************************************************************
     * @param l
     **************************************************************************/
    public void removeFinishedListener( ItemActionListener<Boolean> l );

    /***************************************************************************
     * @return
     **************************************************************************/
    public Component getView();
}
